import { reqCartList, reqDeleteCartById, reqUpdateCheckedById } from '@/api'
const state = {
    cartList: []
};
const actions = {
    // 获取购物车列表的数据
    async getCartList({ commit }) {
        let { data } = await reqCartList();
        if (data.code == 200) {
            commit('GETCARTLIST', data.data);
        }
    },
    // 删除购物车列表的数据
    async deleteCartListBySkuId({ commit }, skuId) {
        let { data } = await reqDeleteCartById(skuId);
        if (data.code == 200) {
            return 'ok'
        } else {
            return Promise.reject(new Error('faile'));
        }
    },
    // 修改购物车产品的选中状态
    async UpdataCheckedById({ commit }, { skuId, isChecked }) {
        let { data } = await reqUpdateCheckedById(skuId, isChecked);
        if (data.code == 200) {
            return 'ok'
        } else {
            return Promise.reject(new Error('faile'));
        }
    },
    // 删除全部勾选的产品
    deketeAllCheckedCart({ dispatch, getters }) {
        // context: 小仓库
        // 获取购物车中全部的产品
        let PromiseAll = [];
        getters.cartList.cartInfoList.forEach(item => {
            let promise = item.isChecked == 1 ? dispatch('deleteCartListBySkuId', item.skuId) : ""
            // 将每一次返回的Promise返回数组当中
            PromiseAll.push(promise);
        });
        // 只要全部的 p1|p2...都成功，返回的即为成功
        // 如果只要有一个失败，就都失败
        return Promise.all(PromiseAll);
    },
    // 修改全部产品的状态
    updateAllCartIsChecked({dispatch, getters}, isChecked) {
        // 数组
        let PromiseAll = [];
        console.log();
        getters.cartList.cartInfoList.forEach(item => {
            let promise = dispatch('UpdataCheckedById', {skuId: item.skuId, isChecked});
            PromiseAll.push(promise);
        });
        // 最终返回结果
        return Promise.all(PromiseAll);
    }
};
const mutations = {
    GETCARTLIST(state, cartList) {
        state.cartList = cartList;
    }
};
const getters = {
    cartList(state) {
        return state.cartList[0] || {};
    },
    // // 计算出来购物出数据
    // cartInfoList(state) {
    //     return 
    // }
};

export default {
    state,
    mutations,
    actions,
    getters
}